<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>超好用的reduce方法</title>
</head>
<body>
    
</body>
<script>
    /*
        超级好用的reduce方法  reduce方法有四个参数 reduce(pre,item,index,arr)
            四个参数分别代表的是 返回值 当前项 当前索引 原数组
    */
    let arr= [1,2,3,4,5]
    let newarr = arr.reduce((pre,item)=>{
        console.log(pre,item)
    })
    //当我们没有给pre设置初始值的时候 它第一轮循环的值就是索引为1的值 
        // 第二次循环pre的值就是第一轮的返回值  如果没有返回值  那么热pre的值就是undefined

    // 为什么说reduce方法是非常好用的呢  它很适合做一下检查个数的例子 

    // 例1  判断数组中有几个3
    let shu = [3,1,5,3,4,7,6,3,3,2,3]
    // pre可以通过reduce方法的第二个参数来设置 如下我设置的是0  
    // 如果没有设置pre的值  那么它的值就是数组的第一个值
    let count = shu.reduce((pre,item)=>{   
        if(item === 3){
            pre++
        }
        return pre
    },0)
    console.log(count)  // 5  说明其中有5个3

    // 例2  查找数组中的最大值
    let math = [65,78,52,66,15,90,63]
    let max =  math.reduce((pre,item)=>{
        if(item>pre){
            pre = item
        }
        return pre
    },0)
    console.log(max)  // 90
    /*
        以上的两个例子  如果没有使用reduce方法 我们还得循环数组里面的每个元素  比较麻烦  
    */
</script>
</html>